package bintree.LeetCode;

public class Num110_isBalanced {
    public boolean isBalanced(TreeNode root) {
        if(root == null){
            return true;
        }
        //判断根节点的左右子树是否满足平衡要求
        int tmp = maxDepth(root.left) - maxDepth(root.right);
        if(tmp < -1 || tmp > 1){
            return false;
        }
        //左右子树中是否满足平衡要求就交给子方法去处理
        return isBalanced(root.left) && isBalanced(root.right);
    }

    //求树的最大高度
    public int maxDepth(TreeNode root) {
        if(root == null){
            return 0;
        }

        return 1 + Math.max(maxDepth(root.left), maxDepth(root.right));
    }
}
